From 8698e62fb9ba492bd4decd14d4faa7fded661ba2 Mon Sep 17 00:00:00 2001
From: Dan Williams <dcbw@redhat.com>
Date: Tue, 23 Nov 2010 13:10:01 -0600
Subject: [PATCH 1/4] core: handle device removal when properties are unreadable

By the time we get the udev device removal notification we may not
be able to read properties, since the device has already been
removed from sysfs.  That means we can't get the ifindex, so we need
to fall back to the interface name.  But we always want to prefer
the ifindex since that will never change as long as the device is
connected, unlike the interface name.
---
 src/nm-manager.c |    8 ++++++++
 1 files changed, 8 insertions(+), 0 deletions(-)

diff --git a/src/nm-manager.c b/src/nm-manager.c
index eb393fa..48f2173 100644
--- a/src/nm-manager.c
+++ b/src/nm-manager.c
@@ -2426,6 +2426,14 @@ udev_device_removed_cb (NMUdevManager *manager,
 
 	ifindex = g_udev_device_get_property_as_int (udev_device, "IFINDEX");
 	device = find_device_by_ifindex (self, ifindex);
+	if (!device) {
+		/* On removal we won't always be able to read properties anymore, as
+		 * they may have already been removed from sysfs.  Instead, we just
+		 * have to fall back to the device's interface name.
+		 */
+		device = find_device_by_iface (self, g_udev_device_get_name (udev_device));
+	}
+
 	if (device)
 		priv->devices = remove_one_device (self, priv->devices, device, FALSE);
 }
-- 
1.7.3.4

